#ifdef EJEMPLO_2

#include <iostream>
#include <string.h>
#include <fcntl.h>
#include <stdio.h>

#define	NOMBRE_ARCHIVO	"salida.txt"
#define	TEXTO_HIJO		"Mensaje del hijo\n"
#define	TEXTO_PADRE		"Mensaje del padre\n"

using namespace std;

int main () {

	pid_t pid = fork ();

	if ( pid == 0 ) {

		int descriptor = open ( NOMBRE_ARCHIVO,O_CREAT | O_WRONLY,0777 );

		if ( descriptor > 0 ) {
			lseek ( descriptor,0,SEEK_END );
			write ( descriptor,TEXTO_HIJO,strlen(TEXTO_HIJO) );
			sleep ( 1 );

			lseek ( descriptor,0,SEEK_END );
			write ( descriptor,TEXTO_HIJO,strlen(TEXTO_HIJO) );

			lseek ( descriptor,0,SEEK_END );
			write ( descriptor,TEXTO_HIJO,strlen(TEXTO_HIJO) );

			close ( descriptor );
		} else {
			perror ( "Hijo: error al abrir archivo" );
		}

		cout << "Hijo: fin del programa" << endl;
		return 0;

	} else {

		int descriptor = open ( NOMBRE_ARCHIVO,O_CREAT | O_WRONLY,0777 );

		if ( descriptor > 0 ) {
			lseek ( descriptor,0,SEEK_END );
			write ( descriptor,TEXTO_PADRE,strlen(TEXTO_PADRE) );

			lseek ( descriptor,0,SEEK_END );
			write ( descriptor,TEXTO_PADRE,strlen(TEXTO_PADRE) );
			sleep ( 1 );

			lseek ( descriptor,0,SEEK_END );
			write ( descriptor,TEXTO_PADRE,strlen(TEXTO_PADRE) );

			close ( descriptor );
		} else {
			perror ( "Padre: error al abrir archivo" );
		}

		cout << "Padre: fin del programa" << endl;
		return 0;

	}

}

#endif
